<?php
require_once("XmlControls.php");

class XmlAggiudicazioneSS extends XmlControls{
	
	static $instance;
	
	private function __construct() {
		
	}

	static function getInstance(){
		
		if(self::$instance == NULL){
			
			self::$instance = new XmlAggiudicazioneSS();
		}
		
		return self::$instance;
	}

	final public function GetData($conn,$cig,$num_progr,$num_progr_scheda) {

  //SOVRASCRIVO IL NUM_PROGR_SCHEDA PER ASSOCIARE CORRETTAMENTE I MSG DI ERRORE
  $_SESSION['XML__NUM_PROGR_SCHEDA']=$num_progr_scheda;
   
		$rs=array();

		$query_data ="SELECT AG.CIG, AG.NUM_PROGR, AG.ISTAT, AG.NUTS, AG.CUP, AG.IMPORTO_COMPLESSIVO_APPALTO , AG.IMPORTO_DISPOSIZIONE , 
					  AG.IMPORTO_ATTUAZIONE_SICUREZZA , AG.PROCEDURA_SCELTA_CONTRAENTE_ID , AG.ASTA_ELETTRONICA , AG.CONDIZIONI_NO_GARA_ID ,
					  AG.RIBASSO_AGGIUDICAZIONE ,AG.OFFERTA_AUMENTO , AG.IMPORTO_AA , AG.DATA_AGGIUDICAZIONE , AG.DATA_STIPULA ,  
					  AG.TERMINE_ULTIMAZIONE , AG.DURATA_CONTRATTUALE , AG.SCHEDA_CHIUSA  , AG.UTENTE_ID , AG.DATA_CHIUSURA ,   
					  AG.ID , AG.ID_SIMOG 
       FROM AGGIUDICAZIONE_SS AG
       WHERE AG.CIG='".$cig."' AND AG.SCHEDA_CHIUSA IN ('S') AND AG.ARCHIVIATA !='S' AND AG.NUM_PROGR='".$num_progr."' ";

		$rs=$conn->doquery_oracle_import($query_data, "select");

		$rs_data=array();
		foreach($rs as $data){
		
			$rs_data["CIG"]=$data["1"];
			$rs_data["NUM_PROGR"]=$data["2"];
			if($rs_data["NUM_PROGR"]>1){
			 // INDIVIDUIAMO L'AGGIUDICAZIONE "PADRE" PRENDENDONO IL NUM_PROGRESSIVO 
			 // DA INVIARE ALL'AUTHORITY COME PROGRESSIVO_CUI
		  $query_data ="SELECT AG.NUM_PROGR 
                  FROM AGGIUDICAZIONE_SS AG
					             WHERE AG.CIG='".$cig."' AND AG.NUM_PROGR < '".$num_progr."' ORDER BY NUM_PROGR DESC";
		  $rs_previous=$conn->doquery_oracle_import($query_data, "select");
		  $rs_data["PROGR_CUI_PRECEDENTE"]=$rs_previous["1"]["1"];	 
   }                                                                                     
			$rs_data["ISTAT"]=$data["3"];
			$rs_data["NUTS"]=$data["4"];
			$rs_data["CUP"]=$data["5"];
			$rs_data["IMPORTO_COMPLESSIVO_APPALTO"]=$data["6"];
			$rs_data["IMPORTO_DISPOSIZIONE"]=$data["7"];
			$rs_data["IMPORTO_ATTUAZIONE_SICUREZZA"]=$data["8"];
			$rs_data["PROCEDURA_SCELTA_CONTRAENTE_ID"]=$data["9"];
			$rs_data["ASTA_ELETTRONICA"]=$data["10"];
			$rs_data["CONDIZIONI_NO_GARA_ID"]=$data["11"];
			$rs_data["RIBASSO_AGGIUDICAZIONE"]=$data["12"];
			$rs_data["OFFERTA_AUMENTO"]=$data["13"];
			$rs_data["IMPORTO_AA"]=$data["14"];
			$rs_data["DATA_AGGIUDICAZIONE"]=$data["15"];
			$rs_data["DATA_STIPULA"]=$data["16"];
			$rs_data["TERMINE_ULTIMAZIONE"]=$data["17"];
			$rs_data["DURATA_CONTRATTUALE"]=$data["18"];
			$rs_data["SCHEDA_CHIUSA"]=$data["19"];
			$rs_data["UTENTE_ID"]=$data["20"];
			$rs_data["DATA_CHIUSURA"]=$data["21"];
			$rs_data["ID"]=$data["22"];
			$rs_data["ID_SIMOG"]=$data["23"];

		}
		
		return $rs_data;
		
	}
	

	final public function GetAggiudicatari($conn,$cig,$num_progr) {	
		
	 $rs=array();

   $query_data ="SELECT TIPO_AGGIUDICATARIO_ID,RUOLO_AGGIUDICATARIO_ID ,RICORSO_REQUISITI,RICORSO_ATTESTAZIONE,
	             CODFISC_DITTA_AUSILIARIA,POSIZIONE_CONTRIBUTIVA_AGG_ID,CODICE_PAESE,CODFISC, DENOMINAZIONE,
	             NOME_LEGALE,COGNOME_LEGALE,CODICE_FISCALE_LEGALE,
	             PAESE, CAMERA_COMMERCIO, INDIRIZZO, CIVICO, CITTA, PROVINCIA, CAP 
              FROM AGG_AGGIUDICATARI_SS
              WHERE CIG='".$cig."' AND NUM_PROGR='".$num_progr."'";

		$rs=$conn->doquery_oracle_import($query_data, "select");
		
		//SE TUTTI I VALORI DEL 1 RECORD SONO NULL SIGNIFICA CHE LA QUERY NON RESTITUISCE NESSUN RECORD
		$cont_rs=@array_count_values($rs[1]);
		$cont_rs=count($cont_rs);
		
		$rs_data=array();
		
		if($cont_rs>0){
		
		$i=0;
		
			foreach($rs as $data){
				
				$rs_data["AGGIUDICATARI"][$i]["TIPO_AGGIUDICATARIO_ID"]=$data["1"];
				$rs_data["AGGIUDICATARI"][$i]["RUOLO_AGGIUDICATARIO_ID"]=$data["2"];
				$rs_data["AGGIUDICATARI"][$i]["RICORSO_REQUISITI"]=$data["3"];
				$rs_data["AGGIUDICATARI"][$i]["RICORSO_ATTESTAZIONE"]=$data["4"];
				$rs_data["AGGIUDICATARI"][$i]["CODFISC_DITTA_AUSILIARIA"]=$data["5"];
				$rs_data["AGGIUDICATARI"][$i]["POSIZIONE_CONTRIBUTIVA_AGG_ID"]=$data["6"];
				$rs_data["AGGIUDICATARI"][$i]["CODICE_PAESE"]=$data["7"];
				$rs_data["AGGIUDICATARI"][$i]["CODFISC"]=$data["8"];
				$rs_data["AGGIUDICATARI"][$i]["DENOMINAZIONE"]=$data["9"];
				$rs_data["AGGIUDICATARI"][$i]["NOME_LEGALE"]=$data["10"];
				$rs_data["AGGIUDICATARI"][$i]["COGNOME_LEGALE"]=$data["11"];
				$rs_data["AGGIUDICATARI"][$i]["CODICE_FISCALE_LEGALE"]=$data["12"];
				
				$rs_data["AGGIUDICATARI"][$i]["PAESE"]=$data["13"];   
				$rs_data["AGGIUDICATARI"][$i]["CAMERA_COMMERCIO"]=$data["14"];   
				$rs_data["AGGIUDICATARI"][$i]["INDIRIZZO"]=$data["15"];   
				$rs_data["AGGIUDICATARI"][$i]["CIVICO"]=$data["16"];   
				$rs_data["AGGIUDICATARI"][$i]["CITTA"]=$data["17"];   
				$rs_data["AGGIUDICATARI"][$i]["PROVINCIA"]=$data["18"];   
				$rs_data["AGGIUDICATARI"][$i]["CAP"]=$data["19"];   
				$i=$i+1;
			}
		}
		
		return $rs_data;
	}
	
	final public function GetIncaricati($conn,$cig,$num_progr) {	

	  $rs=array();
	 		  
	  $query_data ="SELECT  DISTINCT INC.CODFISC,INC.RUOLO_INCARICATO_ID,INC.COGNOME,INC.NOME
                  FROM AGG_INCARICATI_SS INC
                  WHERE INC.CIG='".$cig."' AND INC.NUM_PROGR='".$num_progr."'";

		$rs=$conn->doquery_oracle_import($query_data, "select");
		
		//SE TUTTI I VALORI DEL 1 RECORD SONO NULL SIGNIFICA CHE LA QUERY NON RESTITUISCE NESSUN RECORD
		$cont_rs=@array_count_values($rs[1]);
		$cont_rs=count($cont_rs);
		
		$rs_data=array();
		
		if($cont_rs>0){
			
			$i=0;
			
			foreach($rs as $data){
				
				$rs_data["INCARICATI"][$i]["CODFISC"]=$data["1"];
				$rs_data["INCARICATI"][$i]["RUOLO_INCARICATO_ID"]=$data["2"];
				$rs_data["INCARICATI"][$i]["COGNOME"]=$data["3"];
				$rs_data["INCARICATI"][$i]["NOME"]=$data["4"];
				
				$i=$i+1;
			}
		}
		
		return $rs_data;
	}	
	
	
	final public function CreateXml($rs,$conn) {
		
					
		$xml='<Sottosoglia>';
		$rs_data[1]=$rs["data"];
		
		foreach($rs_data as $record){

			$LUOGO_ISTAT=$this->WorkStringa("LUOGO_ISTAT",$record["ISTAT"],"20");    // OPTIONAL                                    
			$LUOGO_NUTS=$this->WorkStringa("LUOGO_NUTS",$record["NUTS"],"20");       // OPTIONAL                                     
			$CUP=$this->WorkStringa("CUP",$record["CUP"],"15");	                     // OPTIONAL
			
   $IMPORTO_COMPLESSIVO=$this->WorkImporto("IMPORTO_COMPLESSIVO_APPALTO",$record["IMPORTO_COMPLESSIVO_APPALTO"],"Y");  //REQUIRED
			$IMPORTO_DISPOSIZIONE=$this->WorkImporto("IMPORTO_DISPOSIZIONE",$record["IMPORTO_DISPOSIZIONE"],"Y"); //REQUIRED					
   $IMPORTO_ATTUAZIONE_SICUREZZA=$this->WorkImporto("IMPORTO_ATTUAZIONE_SICUREZZA",$record["IMPORTO_ATTUAZIONE_SICUREZZA"]); //OPTIONAL	
   $ID_SCELTA_CONTRAENTE=$this->WorkSceltaContraenteType("ID_SCELTA_CONTRAENTE",$record["PROCEDURA_SCELTA_CONTRAENTE_ID"],$conn);		//OPTIONAL
			$ASTA_ELETTRONICA=$this->WorkSN("ASTA_ELETTRONICA",$record["ASTA_ELETTRONICA"],"Y");			//REQUIRED  	
			$PERC_RIBASSO_AGG=$this->WorkPercent("PERC_RIBASSO_AGG",$record["RIBASSO_AGGIUDICAZIONE"]);	//OPTIONAL
			$PERC_OFF_AUMENTO=$this->WorkPercent("PERC_OFF_AUMENTO",$record["OFFERTA_AUMENTO"]);					   //OPTIONAL   	
			$IMPORTO_AGGIUDICAZIONE=$this->WorkImporto("IMPORTO_AGGIUDICAZIONE",$record["IMPORTO_AA"],"Y");								//REQUIRED
		 $DATA_AGGIUDICAZIONE=$this->WorkData("DATA_AGGIUDICAZIONE",$record["DATA_AGGIUDICAZIONE"]);		 //OPTIONAL  
   $DATA_STIPULA=$this->WorkData("DATA_STIPULA",$record["DATA_STIPULA"],"Y");		 //MODIFICATO FORZATAMENTE A SEGUITO DI ERRORI AVCP 12-12-2011	
   $TERMINE_CONTRATTUALE=$this->WorkData("TERMINE_CONTRATTUALE",$record["TERMINE_ULTIMAZIONE"]);		 //OPTIONAL	
   $DURATA_CONTRATTUALE=$this->WorkNumero("DURATA_CONTRATTUALE",$record["DURATA_CONTRATTUALE"]);		 //OPTIONAL	
   	
   $ID_SCHEDA_LOCALE=$this->WorkNumero("ID_SCHEDA_LOCALE",$record["ID"]);
   $ID_SCHEDA_SIMOG=$this->WorkNumero("ID_SCHEDA_SIMOG",$record["ID_SIMOG"]); 
   
   //IMPORTO ATTUAZIONE SICUREZZA ... NON DISPONBILE IN SIMOG - NUOVO CAMPO LATO AVCP
   
   /* RIAFFIDAMENTI */
   $NUM_PROGR=$record["NUM_PROGR"];
       
			$xml.='<Appalto ';

			if($LUOGO_ISTAT!=''){ $xml.=' tns:LUOGO_ISTAT="'.$LUOGO_ISTAT.'"'; }
			if($LUOGO_NUTS!=''){ $xml.=' tns:LUOGO_NUTS="'.$LUOGO_NUTS.'"'; }
			if($CUP!=''){ $xml.=' tns:CUP="'.$CUP.'"'; }
			if($IMPORTO_COMPLESSIVO!=''){ $xml.=' tns:IMPORTO_COMPLESSIVO="'.$IMPORTO_COMPLESSIVO.'"';}
			if($IMPORTO_DISPOSIZIONE!=''){	$xml.=' tns:IMPORTO_DISPOSIZIONE="'.$IMPORTO_DISPOSIZIONE.'"'; }
			if($IMPORTO_ATTUAZIONE_SICUREZZA!=''){	$xml.=' tns:IMPORTO_ATTUAZIONE_SICUREZZA="'.$IMPORTO_ATTUAZIONE_SICUREZZA.'"'; }
   if($ID_SCELTA_CONTRAENTE!=''){	$xml.=' tns:ID_SCELTA_CONTRAENTE="'.$ID_SCELTA_CONTRAENTE.'"'; }       
   if($ASTA_ELETTRONICA!=''){	$xml.=' tns:ASTA_ELETTRONICA="'.$ASTA_ELETTRONICA.'"'; }          
   if($PERC_RIBASSO_AGG!=''){ $xml.=' tns:PERC_RIBASSO_AGG="'.$PERC_RIBASSO_AGG.'"'; }
   if($PERC_OFF_AUMENTO!=''){ $xml.=' tns:PERC_OFF_AUMENTO="'.$PERC_OFF_AUMENTO.'"'; }         
   if($IMPORTO_AGGIUDICAZIONE!=''){ $xml.=' tns:IMPORTO_AGGIUDICAZIONE="'.$IMPORTO_AGGIUDICAZIONE.'"'; }  
   if($DATA_AGGIUDICAZIONE!=''){ $xml.=' tns:DATA_AGGIUDICAZIONE="'.$DATA_AGGIUDICAZIONE.'"'; }  
   if($DATA_STIPULA!=''){ $xml.=' tns:DATA_STIPULA="'.$DATA_STIPULA.'"'; }
   if($TERMINE_CONTRATTUALE!=''){ $xml.=' tns:TERMINE_CONTRATTUALE="'.$TERMINE_CONTRATTUALE.'"'; }
   if($DURATA_CONTRATTUALE!=''){ $xml.=' tns:DURATA_CONTRATTUALE="'.$DURATA_CONTRATTUALE.'"'; } 
          
	  $xml.=' tns:ID_SCHEDA_LOCALE="'.$ID_SCHEDA_LOCALE.'"';			
 					
			$xml.='/>';
			
   //REQUIRED TAG CONDIZIONI 
			if($ID_SCELTA_CONTRAENTE==10 || $ID_SCELTA_CONTRAENTE==4){
			  $array_cond=explode(";",$record["CONDIZIONI_NO_GARA_ID"]);
			  for($iac=0; $iac<count($array_cond); $iac++){
				  if(!empty($array_cond[$iac])){
       //Condizioni
			    $Condizioni=$this->WorkCondizioneAggType("ID_CONDIZIONE",$array_cond[$iac],$conn);//presenza A - V
       if($Condizioni!=""){
				    $xml.='<Condizioni tns:ID_CONDIZIONE="'.$Condizioni.'"/>';
			    }
		    }
     }
			}
						
			
			//Aggiudicatari
			if(isset($record["AGGIUDICATARI"])){
			 foreach($record["AGGIUDICATARI"] as $key=> $values){
					$ID_TIPOAGG=$this->WorkTipoAggiudicatarioType("ID_TIPOAGG",$values["TIPO_AGGIUDICATARIO_ID"],$conn); //REQUIRED
					$AGG_RUOLO=$this->WorkRuoloAggiudicatarioType("AGG_RUOLO",$values["RUOLO_AGGIUDICATARIO_ID"],$conn); //OPTIONAL
					$FLAG_AVVALIMENTO=$this->WorkFlagAvvalimento("FLAG_AVVALIMENTO",$values["RICORSO_REQUISITI"],$values["RICORSO_ATTESTAZIONE"]);  //REQUIRED
					
					$CF_AUSILIARIA=$this->WorkCF("CF_AUSILIARIA",$values["CODFISC_DITTA_AUSILIARIA"]);                    //OPTIONAL
					$CODICE_FISCALE_AGGIUDICATARIO=$this->WorkCF("CODICE_FISCALE_AGGIUDICATARIO",$values["CODFISC"],"Y"); //REQUIRED
					$CODICE_STATO=$this->WorkStringa("CODICE_STATO",$values["CODICE_PAESE"],'50');
		
				  //$xml.='<Aggiudicatari tns:ID_TIPOAGG="'.$ID_TIPOAGG.'" tns:FLAG_AVVALIMENTO="'.$FLAG_AVVALIMENTO.'" tns:CODICE_FISCALE_AGGIUDICATARIO="'.$CODICE_FISCALE_AGGIUDICATARIO.'" tns:CODICE_STATO="'.$CODICE_STATO.'"  tns:CF_LEGALE="'.$CF_LEGALE.'" tns:NOME_LEGALE="'.$NOME_LEGALE.'" tns:COGNOME_LEGALE="'.$COGNOME_LEGALE.'"  ';
					$xml.='<Aggiudicatari tns:ID_TIPOAGG="'.$ID_TIPOAGG.'" tns:FLAG_AVVALIMENTO="'.$FLAG_AVVALIMENTO.'" tns:CODICE_FISCALE_AGGIUDICATARIO="'.$CODICE_FISCALE_AGGIUDICATARIO.'" tns:CODICE_STATO="'.$CODICE_STATO.'" ';
					
					if($AGG_RUOLO!=''){
						$xml.=' tns:RUOLO="'.$AGG_RUOLO.'"';
					}	
					if($CF_AUSILIARIA!=''){
						$xml.=' tns:CF_AUSILIARIA="'.$CF_AUSILIARIA.'"';
					}				
				 //ID_GRUPPO OPTIONAL INTERO ...?
					$xml.='/>';				
					
			 }
			}
			    
			//Incaricati
			if(isset($record["INCARICATI"])){
			 foreach($record["INCARICATI"] as $key=> $values){

					$CODICE_FISCALE_RESPONSABILE=$this->WorkCF("CODICE_FISCALE_RESPONSABILE",$values["CODFISC"],"Y");
					$ID_RUOLO=$this->WorkRuoloResponsabileType("ID_RUOLO",$values["RUOLO_INCARICATO_ID"],$conn);   //REQUIRED
					$SEZIONE="RS";//$ Vedi specifiche MassLoader ver.: 3.02.16 
					
     $xml.='<Incaricati ';
					
					if($CODICE_FISCALE_RESPONSABILE!=""){
      	$xml.=' tns:CODICE_FISCALE_RESPONSABILE="'.$CODICE_FISCALE_RESPONSABILE.'" ';
     }
					
					$xml.=' tns:ID_RUOLO="'.$ID_RUOLO.'" tns:SEZIONE="'.$SEZIONE.'"';
													
					$xml.='/>';
			 }	
		 }
	 
		}

		$xml.='</Sottosoglia>';		 
    
		return $xml;

	}

}
?>